package com.enjoyor.soa.traffic.api.service.dubbo.vms;

import com.enjoyor.soa.traffic.api.dto.vms.ProgGroupDto;
import com.enjoyor.soa.traffic.api.dto.vms.ProgInfoDto;
import com.enjoyor.soa.traffic.api.dto.vms.ProgPicSizeRelateDto;
import com.enjoyor.soa.traffic.api.dto.vms.ProgVmsRelateDto;
import com.enjoyor.soa.traffic.api.tvs.dto.BlockDataDto;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.List;
import java.util.Map;

/**
* @Title: IDubboProgManageService.java
* @Package com.enjoyor.soa.traffic.api.vms.publish.service.dubbo 
* @Description: TODO(用一句话描述该文件做什么) 
* @author sxh
* @date 2017年4月21日 下午2:03:14 
* @version V1.0   
*/
public interface IDubboProgManageService {
	/**
	 * 验证节目名称是否重复
	 * @return String 
	*/
	public ResultPojo valiProgName(String progName);

	/**
	 * 保存节目，不发送
	 * @param picSizeDtoList 图片信息，尺寸区分
	 * @param progInfoDto 节目信息
	 * @param vmsRelateDtoList 节目与诱导屏关联信息
	 * @return
	 */
	public ResultPojo saveProgInfo(List<ProgPicSizeRelateDto> picSizeDtoList, ProgInfoDto progInfoDto,
								   List<ProgVmsRelateDto> vmsRelateDtoList);
	
	/**
	 * 保存并发送节目
	 * @return String 
	*/
	public ResultPojo saveAndSendProgInfo(List<ProgPicSizeRelateDto> picSizeDtoList, ProgInfoDto progInfoDto,
										  List<ProgVmsRelateDto> vmsRelateDtoList);

	/*ResultPojo saveAndSendProgInfoInvoke(String progId,String ledId,String imgBase64,String beginTime,String endTime,
											 int stayTime,int width,int height,String  username);*/
	/**
	 * 新建节目保存并发送
	 * @param img_base64_data(100001_20170627092505874(test)@208#48.bmp=Qk32EwAAAA)
	 * @param img_base64_data  (图片,progInfoObj,sizeObjArr,vmsRelateArr,progShowInfoObj)
	 * @return String
	 */
	//public ResultPojo saveAndSendProgInfo(String img_base64_data,List<ProgPicSizeRelateDto> picSizeDtoList, ProgInfoDto progInfoDto, List<ProgVmsRelateDto> vmsRelateDtoList);
	
	/**
	 * 保存并发送节目(以文字形式发送)
	 * @return String 
	*/
	public ResultPojo saveAndSendCharProgInfo(List<ProgPicSizeRelateDto> picSizeDtoList, ProgInfoDto progInfoDto,
											  List<ProgVmsRelateDto> vmsRelateDtoList);



	/**
	 * 保存并发送节目(以文字形式发送)
	 *
	 * @param progId 节目Id
	 * @param ledId	诱导屏Id
	 * @param rtfName	节目内容格式字符串
	 * @param beginTime	开始时间
	 * @param endTime	结束时间
	 * @param stayTime	停留时间
	 * @param width	诱导屏宽度
	 * @param height	诱导屏高度
	 * @return String	结果
	 */
	public ResultPojo saveAndSendCharProgInfoInvoke(String progId,String ledId,String rtfName,String beginTime,String endTime,
											 		int stayTime,int width,int height,String  username);
	
	/**
	 * 删除节目
	 * @return String 
	*/
	public ResultPojo delProgInfo(String progId,String userName);
	
	/**
	 * 删除节目
	 * @return String 
	*/
	public ResultPojo delProg(String group_id, String logMemo);
	/**
	 * 删除节目
	 * @return String 
	*/
	public ResultPojo delProg(String group_id, String led_id, String logMemo);
	
	/**
	 * 删除节目与屏管理
	 * @return String 
	*/
	public ResultPojo delProgRelate(String data);
	
	/**
	 * 修改单个屏节目
	 * @return String 
	*/
	public ResultPojo updateLedProg(List<ProgPicSizeRelateDto> picSizeDtoList,
									ProgInfoDto progInfoDto, List<ProgVmsRelateDto> vmsRelateDtoList);
	
	/**
	 * 修改单个屏节目属性（不修改图片）
	 * @return String 
	*/
	public ResultPojo updateLedProgWithoutPic(ProgInfoDto progInfodto);
	
	/**
	 * 修改节目单
	 * @return String 
	*/
	public ResultPojo updateProg(ProgInfoDto progInfoDto, List<ProgVmsRelateDto> vmsRelateDtoList,
								 List<ProgPicSizeRelateDto> picSizeDtoList);
	
	/**
	 * 修改节目单属性（不修改图片）
	 * @return String 
	*/
	public ResultPojo updateProgWithoutPic(ProgInfoDto progInfoDto,List<ProgVmsRelateDto> vmsRelateDtoList,
										   List<ProgPicSizeRelateDto> picSizeDtoList);
	
	/**
	 * 获取当前节目单
	 * @return String 
	*/
	public ResultPojo getOnProgList(String data);
	
	/**
	 * 获取总节目单
	 * @return String 
	*/
	public ResultPojo getProgList(String data);
	
	/**
	 * 获取屏路段状态
	 * @return String 
	*/
	public ResultPojo getBlockStatus(String data);
	
	/**
	 * 设置屏路段状态
	 * @return String 
	*/
	public ResultPojo setBlockStatus(String ledId, String status);

	/**
	 * 发送所有路网状态到屏
	 * @param listBlockInfo
	 * @return
     */
	public ResultPojo setBlockStatus(List<BlockDataDto> listBlockInfo);

	/**
	 * 修改指定路网状态到屏
	 * @param blockInfo
	 * @return
     */
	public ResultPojo setBlockStatus(BlockDataDto blockInfo);

    /**
     * 设置停车场剩余车位
     * key：停车场编号，value：剩余车位
     * @param map
     */
    public void setParkRestcount(Map<String, String> map);

	/**
	 * 手动更新路段状态
	 * @return String 
	*/
	public ResultPojo catchBlockStatus(String blockId,String status,String deadLine);
	
	/**
	 * 获取节目和屏关联信息
	 * @return String 
	*/
	public ResultPojo getProgInfoAndVmsRalate(String data);
	
	
	/**
	 * 更新节目单顺序
	 * @return String 
	*/
	public ResultPojo updateProgOrder(String[] progArray, String[] seq, String ledId);
	
	/**
	 * 获取节目单树
	 * @return String 
	*/
	public ResultPojo getProgZtree(int id);
	
	/**
	 * 获取节目日志
	 * @return String 
	*/
	public ResultPojo getProgLogInfo(String data);
	
	/**
	 * 判断节目是否可用
	 * @return String 
	*/
	public ResultPojo isEnableProg(String progId, String[] ledIds, String status);
	
	/**
	 * 获取节目单树
	 * @return String 
	*/
	public ResultPojo getProgTree(int id);

	/** 
	* @Description: TODO
	* @author sxh
	* @param @param data
	* @param @return    设定文件
	* @return String    返回类型
	* @throws 
	*/
	ResultPojo getProgSzieRalate(String data);
	
	
	/*
	 * 获取节目类型grouptype树
	 */
	public ResultPojo PROG_GROUPTREE(int id);

	public ResultPojo listProgType(String parentId, String typeId, String typeName);

	public ResultPojo deleteProgType(String typeId) ;

	public ResultPojo addProgType(ProgGroupDto dto);

	public ResultPojo editProgType(ProgGroupDto dto);

	/*
	 * 删除单个屏节目
	 */
	public ResultPojo delSingleProg(String [] ledIdArray, String[] progIdArray);
	
	
	/** 
	* @Description: TODO
	* @author sxh
	* @param @param ledids 屏号，多个屏用逗号分隔
	* @param @param ledWidth 屏宽度
	* @param @param ledHeight 屏高度
	* @param @param content 内容
	* @param @param startTime 开始时间
	* @param @param endTime 结束时间
	* @param @return    设定文件
	* @return String    返回类型
	* @throws 
	*/
	public ResultPojo addSingleProg(ProgInfoDto progInfodto);

    public ResultPojo getCurrentProgInfo();

	void saveAndSendProgInfo(String progId, String ledId, String imgBase64, String beginTime, String endTime,
			int stayTime, int width, int height, String username);

}